package coreservlets;
import java.util.ArrayList;
import javax.faces.application.FacesMessage;
import javax.faces.bean.*;
import javax.faces.component.UIComponent;
import javax.faces.context.FacesContext;
import javax.faces.model.SelectItem;
import javax.faces.validator.ValidatorException;

@ManagedBean 
public class Usuario {
    private int id;
    private String login;
    private String nome;
    private String senha;
    private int tipoUsuario;
//    private TipoUsuario tipoUsuario;
    private String email;
    private String senhaAtual;
    private String senhaConfirma;
    private String senhaNova;
    private ArrayList listaTipoUsuario = new ArrayList();
    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getLogin() {
        return login;
    }

    public void setLogin(String login) {
        this.login = login.trim();
    }

    public String getNome() {
        return nome;
    }

    public void setNome(String nome) {
        this.nome = nome.trim();
    }

    public String getSenha() {
        return senha;
    }

    public void setSenha(String senha) {
        this.senha = senha;
    }

    public int getTipoUsuario() {
        return this.tipoUsuario;
    }
/*
    public TipoUsuario getTipoUsuario() {
        return tipoUsuario;
    }
*/
    public void setTipoUsuario(int tipoUsuario) {
//        this.tipoUsuario = tipoUsuario;
//        this.tipoUsuario = tipoUsuario;
        this.tipoUsuario = tipoUsuario;
    }
/*
    public void setTipoUsuario(TipoUsuario tipoUsuario) {
        this.tipoUsuario = tipoUsuario;
    }
*/    
    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email.trim();
    }

    public String getSenhaAtual() {
        return senhaAtual;
    }

    public void setSenhaAtual(String senhaAtual) {
        this.senhaAtual = senhaAtual;
    }

    public String getSenhaConfirma() {
        return senhaConfirma;
    }

    public void setSenhaConfirma(String senhaConfirma) {
        this.senhaConfirma = senhaConfirma;
    }

    public String getSenhaNova() {
        return senhaNova;
    }

    public void setSenhaNova(String senhaNova) {
        this.senhaNova = senhaNova;
    }
    public ArrayList getListaTipoUsuario()
    {
        listaTipoUsuario = new ArrayList();
        listaTipoUsuario.add(new SelectItem("", "Selecione"));  
        listaTipoUsuario.add(new SelectItem("1", "Coletor"));  
        listaTipoUsuario.add(new SelectItem("2", "Cliente"));  
        listaTipoUsuario.add(new SelectItem("3", "Administrador"));
        return listaTipoUsuario;
    }
    
    public String mostraLogin()
    {
//        FacesContext context = FacesContext.getCurrentInstance();
//        context.addMessage("msgLogin", 
//          new FacesMessage("UserID required"));
//        return(null);
        return ("login");
    }
    public String mostraUsuario()
    {
//        FacesContext context = FacesContext.getCurrentInstance();
//        context.addMessage("msgLogin", 
//          new FacesMessage("UserID required"));
//        return(null);
        return ("usuario");
    }

    public void validaLogin(FacesContext context, UIComponent componentToValidate, Object value) 
    {
        
        String valor = value.toString().trim();
        if (valor.equals(""))
        {
            FacesMessage message = new FacesMessage("Informe o login do usuário ");
            throw new ValidatorException(message);
        }
    }
    public void validaUsuarioNome(FacesContext context, UIComponent componentToValidate, Object value) 
    {
        
        String valor = value.toString().trim();
        if (valor.equals(""))
        {
            FacesMessage message = new FacesMessage("Informe o nome do usuário");
            throw new ValidatorException(message);
        }
        if (valor.length()>50)
        {
            FacesMessage message = new FacesMessage("Máximo de 50 caracteres");
            throw new ValidatorException(message);
        }
    }
    public void validaUsuarioLogin(FacesContext context, UIComponent componentToValidate, Object value) 
    {
        
        String valor = value.toString().trim();
        if (valor.equals(""))
        {
            FacesMessage message = new FacesMessage("Informe o login do usuário");
            throw new ValidatorException(message);
        }
        if (valor.length()>30)
        {
            FacesMessage message = new FacesMessage("Máximo de 30 caracteres");
            throw new ValidatorException(message);
        }
    }
    public void validaUsuarioEmail(FacesContext context, UIComponent componentToValidate, Object value) 
    {
        
        String valor = value.toString().trim();
        if (valor.equals(""))
        {
            FacesMessage message = new FacesMessage("Informe o E-mail do usuário");
            throw new ValidatorException(message);
        }
        if ((
                valor.indexOf('@') == -1)||valor.indexOf('@') == valor.length()-1||valor.indexOf('@') == 0
                )
        {
            FacesMessage message = new FacesMessage("E-mail inválido");
            throw new ValidatorException(message);
        }
    }
    public void validaUsuarioSenhaNova(FacesContext context, UIComponent componentToValidate, Object value) 
    {
        
        String valor = value.toString().trim();
        if (valor.equals(""))
        {
            FacesMessage message = new FacesMessage("Informe o senha do usuário");
            throw new ValidatorException(message);
        }
    }
    public void validaUsuarioSenhaConfirma(FacesContext context, UIComponent componentToValidate, Object value) 
    {
        
        String valor = value.toString().trim();
        if (valor.equals(""))
        {
            FacesMessage message = new FacesMessage("Informe o senha de confirmação do usuário");
            throw new ValidatorException(message);
        }
    }
}
